<?php

namespace App\Service\Collect;

use QL\QueryList;

class Net163 extends Base
{
    // 从网易采集

    // 初始化
    protected function init()
    {
        parent::init();
    }


    // 保存到数据表
    public function saveApiDataToDb($_item, $key)
    {
        $_title  = $_item['title'];
        $_href   = $_item['href'];
        $_date   = $_item['time'];   // 2021-05-15
        $_author = $_item['author'];
        $_ctime  = strtotime($_date); // 时间

        $_cover = '';
        $_desc  = '';
        $images = [];

        // 采集地址
        $_href = $this->realHref($_href);
        // 判断链接是否已经采集
        $info = $this->isGather($_href);
        if($info){
            return $this->return_false(' '.($key + 1).'：==> 已经采集文章：'.$_title);
        }
        // 只采集今天的
        if($_ctime < $this->startTime){
            return $this->return_die(' '.($key + 1).'：==> 文章：不是今天的文章：'.$_title);
        }
        // https://www.163.com/v/video/VS1F53QI5.html
        // 视频不采集
        if(strpos($_href, 'https://www.163.com/v/video') !== false){
            return $this->return_false(' '.($key + 1).'：==> 文章：不是文章是视频，不采集：'.$_title);
        }
        // 如果没有标题
        /*if(empty($_title)){
            return $this->return_false(' '.($key + 1).'：==> 文章：没有标题，不能采集：'.$_title);
        }*/

        // 只采集有评论的
        /*if($_item['comment'] < 1){
            return $this->return_false(' '.($key + 1).'：==> 文章：评论数过少，不采集：'.$_title);
        }*/


        // 查询
        //$this->showMsg(' '.($key + 1).'：==> 采集文章：'.$_title);
        try{
            $_ql = QueryList::get($_href);
        } catch(\Exception $e){
            return $this->return_false($e->getMessage());
        }


        //  主要获取 时间，用户，标题，内容
        $_title  = $_ql->find('#contain .post_main h1')->text();
        $_author = $_ql->find('#contain .post_main .post_info a:eq(0)')->text();
        $_time   = $_ql->find('#contain .post_main .post_info')->text();

        // 时间处理
        $_time = trim(mb_substr($_time, 0, mb_strpos($_time, '来源') - 1));
        if($_time){
            $_ctime = strtotime($_time);
        }

        // 内容与图片
        $rule = ['html' => ['', 'html'], 'text' => ['', 'text'], 'img' => ['img', 'src'],];
        $rule = ['text' => ['', 'text'], 'img' => ['img', 'src'],];
        $list = $_ql->range('#contain .post_main .post_content .post_body p')->rules($rule)->queryData();
        foreach($list as $item){
            if($item['img']){
                $images[] = $item['img'];
                if(empty($_cover)){
                    $_cover = $item['img'];
                }
            }
            if(empty($_desc)){
                $_desc = $item['text'];
            }
        }

        // 全匹配 精准匹配
        if((strpos($_desc, $this->keyword) === false) && strpos($_title, $this->keyword) === false){
            return $this->return_false('==> 文章：文章没有精准匹配到搜索的关键字！');
        }

        $_channel  = '';
        $from_site = '网易财经';
        $site_id   = 9;
        $_row      = [
            'link'         => $_href,
            'title'        => trim($_title),
            'description'  => $_desc,
            'text'         => $_desc,
            'time'         => $_ctime,
            'images'       => $images,
            'cover'        => $_cover,
            'author'       => trim($_author),
            'from_channel' => $_channel,
            'from_site'    => $from_site,
            'site_id'      => $site_id,
        ];

        //var_dump($_row);
        $res = $this->saveArticle($_row);

        return $res;
    }


    // 获取api接口的列表(测试)
    //   没有翻页，全部获取
    public function getApiList($keyword, $page = 1, $size = 10)
    {
        if(empty($keyword)){
            return $this->return_die('传递采集关键字！');
        }

        $rule = [
            'cover'  => ['.keyword_img a img', 'src'],
            'href'   => ['h3 a', 'href'],
            'title'  => ['h3 a', 'text'],
            'author' => ['.keyword_other .keyword_source', 'text'],
            'time'   => ['.keyword_other .keyword_time', 'text'],
        ];

        // https://www.163.com/search?keyword=易见股份
        $url   = 'https://www.163.com/search?keyword='.$keyword;
        $lists = $this->getQLList($url, '.container .keyword_body .keyword_main .keyword_list', '.keyword_new', $rule);
        // 没有翻页 所以不会为空
        if(empty($lists)){
            return $this->return_die('    没有采集内容!');
        }

        return $lists;
    }


}

